package com.master.rl;

import java.sql.ResultSet;
import java.text.DecimalFormat;

import com.master.ed.Ordem_CompraED;
import com.master.root.FormataDataBean;
import com.master.util.Data;
import com.master.util.Excecoes;
import com.master.util.bd.ExecutaSQL;
import com.master.util.bd.Transacao;
import com.master.util.rl.GeraPDF;
import com.master.util.rl.GeraXML;
import com.master.util.Utilitaria;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2002</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

public class Ordem_CompraRL  extends Transacao {

  FormataDataBean dataFormatada = new FormataDataBean ();
  DecimalFormat dec2 = new DecimalFormat ("###,###,##0");
  private ExecutaSQL executasql;
  Utilitaria util = new Utilitaria(executasql);


  public byte[] Relatorio_Ordem_Compra (Ordem_CompraED ed , ResultSet res) throws Excecoes {

    // //  (" rel 2");

    int iTotalPorCTRC = 0;
    int iTotalGeral = 0;
    double VL_Total = 0;
    double VL_Total_Geral = 0;

    try {
      GeraXML x = new GeraXML ();
      DecimalFormat dec = new DecimalFormat ("###,###,##0.00");
      DecimalFormat dec2 = new DecimalFormat ("###,###,##0.000");
      ResultSet res2 = null;

      x.insereDTD ();

      x.insereTagXML ("RELATORIO" , x.ABRE);

      x.insereTagXML ("ID_RELATORIO" , x.ABRE);

      x.insereElementoXML ("CODIGO" , "froF101");
      x.insereElementoXML ("TITULO" , "---");
      x.insereTagXML ("ID_RELATORIO" , x.FECHA);
      x.insereTagXML ("PROCESSAMENTO" , x.ABRE);

      String data = Data.getDataDMY ();
      String hora = Data.getHoraHM ();

      x.insereElementoXML ("DATA" , data);
      x.insereElementoXML ("HORARIO" , hora);
      x.insereTagXML ("PROCESSAMENTO" , x.FECHA);
      x.insereTagXML ("LISTA_UNID" , x.ABRE);

      boolean bPrimVez = true;

      while (res.next ()) {

        // //  (" rel 3");

        //primeira volta no loop
        if (bPrimVez == true) {
          bPrimVez = false;
          x.insereTagXML ("UNID" , x.ABRE);
          x.insereTagXML ("LISTA_CTRC" , x.ABRE);
        }

        x.insereTagXML ("CTRC" , x.ABRE);

        // //  (" rel a");
        x.insereElementoXML ("PLACA" , res.getString ("oid_veiculo") == null ? "" : res.getString ("oid_veiculo"));

        if ("A".equals (ed.getDM_Relatorio ())) {
          this.inicioTransacao ();
          this.executasql = this.sql;
          
          String sqlBusca = "Select NM_Razao_Social " +
              " FROM  Pessoas " +
              " WHERE Pessoas.oid_Pessoa = '" + res.getString ("oid_pessoa_funcionario") + "'";
          res2 = executasql.executarConsulta (sqlBusca);
          while (res2.next ()) {
            String nm_pessoa=(res2.getString ("NM_Razao_Social")+"                                        ").substring(0,30);
            if (res.getString ("oid_Veiculo")!=null && !res.getString ("oid_Veiculo").equals("null")){
              nm_pessoa="("+res.getString ("oid_Veiculo")+")";
            }
            x.insereElementoXML ("FUNCIONARIO" , nm_pessoa);
          }
          this.fimTransacao (true);
        }



        x.insereElementoXML ("CD_TIPO_COMPRA" , res.getString ("CD_Tipo_Servico") == null ? "" : res.getString ("CD_Tipo_Servico"));
        x.insereElementoXML ("NM_TIPO_COMPRA" , res.getString ("NM_Tipo_Servico") == null ? "" : res.getString ("NM_Tipo_Servico"));
        x.insereElementoXML ("DOCUMENTO" , res.getString ("nr_ordem_compra") == null ? "" : res.getString ("nr_ordem_compra"));
        x.insereElementoXML ("DT_MOVIMENTO" , res.getString ("dt_ordem_compra") == null ? "" : dataFormatada.getDT_FormataData (res.getString ("dt_ordem_compra")));
        x.insereElementoXML ("FORNECEDOR" , (res.getString ("NM_Fornecedor") +"                                   ").substring(0,30));
        x.insereElementoXML ("VALOR" , dec.format (res.getDouble ("vl_previsto")) == null ? "" : dec.format (res.getDouble ("vl_previsto")));

        VL_Total       += res.getDouble ("vl_previsto");
        VL_Total_Geral += res.getDouble ("vl_previsto");

        x.insereTagXML ("CTRC" , x.FECHA);

        iTotalPorCTRC++;
        iTotalGeral++;
      }
      if (iTotalGeral==0){
        x.insereTagXML ("UNID" , x.ABRE);
        x.insereTagXML ("LISTA_CTRC" , x.ABRE);
        x.insereTagXML ("CTRC" , x.ABRE);
        x.insereElementoXML ("FORNECEDOR" , " ---  ");
        x.insereTagXML ("CTRC" , x.FECHA);
      }

      x.insereElementoXML ("TOTAL" , dec.format (VL_Total));

      x.insereTagXML ("LISTA_CTRC" , x.FECHA);
      x.insereElementoXML ("TOTAL" , dec.format (VL_Total_Geral));

      x.insereTagXML ("UNID" , x.FECHA);
      x.insereTagXML ("LISTA_UNID" , x.FECHA);
      x.insereTagXML ("RELATORIO" , x.FECHA);

      GeraPDF geraPDF = new GeraPDF ();
      geraPDF.setXML (x.retornaXML ());

      // //  (" rel 70");

      // //  (x.retornaXML ().toString ());

      String CaminhoXSL = System.getProperty ("CaminhoXSL");
      String relatorio="Relatorio_Ordem_Compra";
      if ("A".equals(ed.getDM_Relatorio())){
        relatorio="Relatorio_Ordem_Abastecimento";
      }
          
      geraPDF.setXSL (new StringBuffer (CaminhoXSL + relatorio + ".xsl"));
      geraPDF.parseToBytes ();

      byte[] b = geraPDF.getArrayPDF ();
      return b;

    }
    catch (Exception e) {
      Excecoes exc = new Excecoes ();
      exc.setExc (e);
      exc.setMensagem ("Erro ao gerar Relatorio_Ordem_Compra");
      exc.setClasse (this.getClass ().getName ());
      exc.setMetodo ("geraRelConhecFatura(ResultSet res)");
      throw exc;
    }

  }

  public byte[] imprime_Requisicao (Ordem_CompraED ed , ResultSet res) throws Excecoes {

    // //  (" rel 2");

    ResultSet resCTRC = null;
    ResultSet resCTRC2 = null;
    this.inicioTransacao ();
    this.executasql = this.sql;
    String sqlBusca = null;

    try {
      GeraXML x = new GeraXML ();
      DecimalFormat dec = new DecimalFormat ("###,###,##0.00");
      DecimalFormat dec2 = new DecimalFormat ("###,###,##0.000");

      x.insereDTD ();

      x.insereTagXML ("RELATORIO" , x.ABRE);

      x.insereTagXML ("LISTA_ORDEM" , x.ABRE);

      x.insereTagXML ("ID_RELATORIO" , x.ABRE);

      x.insereElementoXML ("CODIGO" , "froF101");
      x.insereElementoXML ("TITULO" , "Ordem de Compra");
      x.insereTagXML ("ID_RELATORIO" , x.FECHA);
      x.insereTagXML ("PROCESSAMENTO" , x.ABRE);

      String data = Data.getDataDMY ();
      String hora = Data.getHoraHM ();

      x.insereElementoXML ("DATA" , ed.getDT_Emissao());
      x.insereElementoXML ("HORARIO" , hora);
      x.insereTagXML ("PROCESSAMENTO" , x.FECHA);

      while (res.next ()) {
        x.insereElementoXML ("NUMERO" , res.getString ("NR_Ordem_Compra") == null ? "" : res.getString ("NR_Ordem_Compra"));

        // //  (" rel a");

        x.insereTagXML ("CompraS" , x.ABRE);
        x.insereElementoXML ("TIPO" , res.getString ("NM_Tipo_Servico") == null ? "" : res.getString ("NM_Tipo_Servico"));
        x.insereElementoXML ("OBS" , res.getString ("TX_Observacao") == null ? "" : res.getString ("TX_Observacao"));
        x.insereElementoXML ("VEICULO" , res.getString ("OID_Veiculo") == null ? "" : res.getString ("OID_Veiculo"));

        x.insereElementoXML ("NM_Compra1" , res.getString ("NM_Compra1") == null ? "" : res.getString ("NM_Compra1"));
        x.insereElementoXML ("NM_Compra2" , res.getString ("NM_Compra2") == null ? "" : res.getString ("NM_Compra2"));
        x.insereElementoXML ("NM_Compra3" , res.getString ("NM_Compra3") == null ? "" : res.getString ("NM_Compra3"));
        x.insereElementoXML ("NM_Compra4" , res.getString ("NM_Compra4") == null ? "" : res.getString ("NM_Compra4"));
        x.insereElementoXML ("NM_Compra5" , res.getString ("NM_Compra5") == null ? "" : res.getString ("NM_Compra5"));
        x.insereElementoXML ("NM_Compra6" , res.getString ("NM_Compra6") == null ? "" : res.getString ("NM_Compra6"));
        x.insereElementoXML ("NM_Compra7" , res.getString ("NM_Compra7") == null ? "" : res.getString ("NM_Compra7"));
        x.insereElementoXML ("NM_Compra8" , res.getString ("NM_Compra8") == null ? "" : res.getString ("NM_Compra8"));
        x.insereElementoXML ("NM_Compra9" , res.getString ("NM_Compra9") == null ? "" : res.getString ("NM_Compra9"));
        x.insereElementoXML ("NM_Compra10" , res.getString ("NM_Compra10") == null ? "" : res.getString ("NM_Compra10"));
        x.insereElementoXML ("CONDICAO_PAGAMENTO" , res.getString ("NM_CONDICAO_PAGAMENTO") == null ? "" : res.getString ("NM_CONDICAO_PAGAMENTO"));

        x.insereElementoXML ("VALOR_PREVISTO" , dec.format (res.getDouble ("VL_Previsto")) == null ? "" : dec.format (res.getDouble ("VL_Previsto")));

        x.insereTagXML ("CompraS" , x.FECHA);

        sqlBusca = "Select " +
            " Pessoas.NR_CNPJ_CPF, " +
            " Pessoas.NM_RAZAO_SOCIAL, " +
            " Pessoas.NM_ENDERECO, " +
            " Pessoas.NR_CEP, " +
            " Pessoas.NM_BAIRRO, " +
            " Cidades.NM_CIDADE, " +
            " Estados.CD_ESTADO " +
            " FROM " +
            " Pessoas, " +
            " Cidades,  " +
            " Regioes_Estados, " +
            " Estados " +
            " WHERE Pessoas.OID_CIDADE = Cidades.OID_CIDADE " +
            " AND Cidades.OID_REGIAO_ESTADO = Regioes_Estados.OID_REGIAO_ESTADO " +
            " AND Regioes_Estados.OID_ESTADO = Estados.OID_ESTADO " +
            " AND Pessoas.oid_Pessoa = '" + res.getString ("oid_Pessoa_Fornecedor") + "'";

        resCTRC = this.executasql.executarConsulta (sqlBusca);
        while (resCTRC.next ()) {
          x.insereTagXML ("FORNECEDOR" , x.ABRE);
          x.insereElementoXML ("NOME" , resCTRC.getString ("NM_RAZAO_SOCIAL") == null ? "" : resCTRC.getString ("NM_RAZAO_SOCIAL"));
          x.insereElementoXML ("ENDERECO" , resCTRC.getString ("NM_ENDERECO") == null ? "" : resCTRC.getString ("NM_ENDERECO"));
          x.insereElementoXML ("CIDADE" , resCTRC.getString ("NM_CIDADE") == null ? "" : resCTRC.getString ("NM_CIDADE"));
          x.insereElementoXML ("CNPJ" , resCTRC.getString ("NR_CNPJ_CPF") == null ? "" : resCTRC.getString ("NR_CNPJ_CPF"));
          String Telefones = "";
          sqlBusca = " Select * FROM Contatos " +
              " WHERE Contatos.OID_Pessoa = '" + resCTRC.getString ("NR_CNPJ_CPF") + "'";

          resCTRC2 = this.executasql.executarConsulta (sqlBusca);

          while (resCTRC2.next ()) {
            Telefones = Telefones + " " + resCTRC2.getString ("NR_TELEFONE") + "/" + resCTRC2.getString ("NR_CELULAR");
          }
          x.insereElementoXML ("TELEFONE" , Telefones);

          x.insereTagXML ("FORNECEDOR" , x.FECHA);
        }

        sqlBusca = "Select " +
            " Pessoas.NR_CNPJ_CPF, " +
            " Pessoas.NM_RAZAO_SOCIAL, " +
            " Pessoas.NM_ENDERECO, " +
            " Pessoas.NR_CEP, " +
            " Pessoas.NM_BAIRRO, " +
            " Cidades.NM_CIDADE, " +
            " Estados.CD_ESTADO " +
            " FROM " +
            " Pessoas, " +
            " Cidades,  " +
            " Regioes_Estados, " +
            " Estados " +
            " WHERE  Pessoas.OID_CIDADE = Cidades.OID_CIDADE " +
            " AND    Cidades.OID_REGIAO_ESTADO = Regioes_Estados.OID_REGIAO_ESTADO " +
            " AND    Regioes_Estados.OID_ESTADO = Estados.OID_ESTADO " +
            " AND    Pessoas.oid_Pessoa = '" + res.getString ("oid_pessoa_funcionario") + "'";

        // //  (sqlBusca);
        resCTRC = this.executasql.executarConsulta (sqlBusca);
        while (resCTRC.next ()) {
          // //  ("->>>>" + resCTRC.getString ("NM_RAZAO_SOCIAL"));
          x.insereElementoXML ("FUNCIONARIO" , resCTRC.getString ("NM_RAZAO_SOCIAL") + "  (" + resCTRC.getString ("NR_CNPJ_CPF") + ")");
        }

      }

      x.insereTagXML ("LISTA_ORDEM" , x.FECHA);
      x.insereTagXML ("RELATORIO" , x.FECHA);

      GeraPDF geraPDF = new GeraPDF ();
      geraPDF.setXML (x.retornaXML ());

      // //  (" rel 70");

      // //  (x.retornaXML ().toString ());

      String CaminhoXSL = System.getProperty ("CaminhoXSL");
      String relatorio = "Ordem_Compra";
      if ("A".equals (ed.getDM_Relatorio ())) {
        relatorio = "Ordem_Abastecimento";
      }

      geraPDF.setXSL (new StringBuffer (CaminhoXSL + relatorio + ".xsl"));
      geraPDF.parseToBytes ();

      byte[] b = geraPDF.getArrayPDF ();
      return b;

    }
    catch (Exception e) {
      Excecoes exc = new Excecoes ();
      exc.setExc (e);
      exc.setMensagem ("Erro ao gerar Relatorio_Ordem_Compra");
      exc.setClasse (this.getClass ().getName ());
      exc.setMetodo ("geraRelConhecFatura(ResultSet res)");
      throw exc;
    }

  }

} //classe
